package com.example.springboot.service;

import com.aliyun.oss.OSS;
import com.example.springboot.entity.ForumPostImage;
import com.example.springboot.mapper.OSSMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.UUID;

@Service
public class OSSService {

    @Autowired
    private OSS ossClient;

    @Autowired
    private OSSMapper ossMapper;

    @Value("${aliyun.oss.bucketName}")
    private String bucketName;

    @Value("${aliyun.oss.baseUrl}")
    private String baseUrl;

    /**
     * 上传文件到 OSS 并更新管理员头像 URL
     *
     * @param file          上传的文件
     * @param adminUsername 管理员用户名
     * @return 文件访问 URL
     * @throws Exception 异常
     */
    public String uploadFile(MultipartFile file, String adminUsername) throws Exception {
        // 生成唯一文件名
        String fileName = UUID.randomUUID().toString() + ".jpg";

        // 获取文件输入流
        InputStream inputStream = file.getInputStream();

        // 上传文件到 OSS
        ossClient.putObject(bucketName, fileName, inputStream);

        // 生成文件的公开访问 URL
        String fileUrl = baseUrl + "/" + fileName;

        // 调用 Mapper 更新数据库（通过用户名更新头像 URL）
        ossMapper.updateAvatarUrlByUsername(adminUsername, fileUrl);

        // 返回文件访问 URL
        return fileUrl;
    }


    public String uploadImage(MultipartFile file) throws Exception {
        String fileName = UUID.randomUUID().toString() + ".jpg";

        InputStream inputStream = file.getInputStream();
        ossClient.putObject(bucketName, fileName, inputStream);

        return baseUrl + "/" + fileName;


    }

    public void saveImageUrlToDatabase(Integer postId, String imageUrl) {
        ForumPostImage image = new ForumPostImage();
        image.setPostId(postId);
        image.setImageUrl(imageUrl);
        ossMapper.insertImage(image); // 调用正确的方法名
    }

}
